import React, {Component} from 'react'
import {render} from 'react-dom';
import {Router, hashHistory} from 'react-router';
import "babel-polyfill";
import routers from './Config/routes.jsx';
import $ from 'jquery';
window.getHost = function getHost() {
    if(window.location.hostname.indexOf("localhost") >= 0) {
        return process.env.HOST_URL;
    }
    return "http://" + window.location.hostname;
};

export default class App extends Component {
    constructor(props) {
        super(props);
    }

    componentWillMount(){
    }




    render() {
        return (
            <div style={{height:'100%', width:'100%'}}>
                {this.props.children}
            </div>
        )
    }
}

let runApp = function () {
    var clickBeginTime = 0 ; //用户点击页面的时间
    var lastGoBackTime = 0 ; //最后一次返回用户点击返回按钮的时间
    var dataRequest = false; //是否是用户请求数据后页面的跳转---这个要依赖于网络，所有要请求数据然后跳转页面设置的参数。
    window.addEventListener("touchend", function(e){
        console.log("on touch end event");
        clickBeginTime = new Date().getTime();
    });

    window.markDataRequestFlag = function() {
        dataRequest = true;
    };
    window.onhashchange = function(e) {
        var hashChangeCostTime = new Date().getTime() - clickBeginTime;
        console.log("hash change time:" + hashChangeCostTime);
        if(hashChangeCostTime < 100 || dataRequest) {
            console.log("这个是页面跳转。");
            dataRequest = false;
        } else {
            //多次跳转的时间，如果是由于页面多次出发hash change 的话，那么这个时间是很短的
            //如果用户自己点击Back 按钮的话，那么这个time 应该会超出 0.3秒。
            var goBackTimes = (new Date().getTime() - lastGoBackTime);
            console.log("这个显然是：后退。自动跳转时间：" + goBackTimes);
            if(goBackTimes > 100) { //这个必然用户手动点击返回
                window.goBack();
                lastGoBackTime = new Date().getTime();
                dataRequest = false;
            } else { //调用返回按钮出发的 hashChange, 导致二次跳转问题。
                console.log("这个显然是：二次跳转。自动跳转时间：" + goBackTimes);
            }

        }
        return;
    };

    window.goBack = function(){};
    render(
        <Router history={hashHistory}>
            {routers}
        </Router>,
        document.getElementById('content')
    );

}


window.FastClick && FastClick.attach(document.body);

window.onload = function (e) {
    setTimeout(function () {
        // !wx && runApp();
        runApp();
    }, 1000);
}


let configJSSDK = function() {
    let url = window.location.href.split('#')[0];
    const configAccessUrl = getHost() + "/config";
    let data = {curl: url};
    $.ajax({
        url: configAccessUrl,
        type: 'get',
        dataType: 'json',
        data: data,
        success: function (jsonData) {
            wx.config({
                debug:false,
                appId: jsonData.data.appId,
                timestamp: jsonData.data.timestamp,
                nonceStr: jsonData.data.nonceStr,
                signature: jsonData.data.signature,
                jsApiList: ['onMenuShareTimeline',
                    'updateAppMessageShareData',
                    'onMenuShareAppMessage',
                    'onMenuShareQQ',
                    'onMenuShareWeibo',
                    'onMenuShareQZone',
                    'startRecord',
                    'stopRecord',
                    'onVoiceRecordEnd',
                    'playVoice',
                    'pauseVoice',
                    'stopVoice',
                    'onVoicePlayEnd',
                    'uploadVoice',
                    'downloadVoice',
                    'chooseImage',
                    'previewImage',
                    'uploadImage',
                    'downloadImage',
                    'translateVoice',
                    'getNetworkType',
                    'openLocation',
                    'getLocation',
                    'hideOptionMenu',
                    'showOptionMenu',
                    'hideMenuItems',
                    'showMenuItems',
                    'hideAllNonBaseMenuItem',
                    'showAllNonBaseMenuItem',
                    'closeWindow',
                    'scanQRCode',
                    'chooseWXPay',
                    'openProductSpecificView',
                    'addCard',
                    'chooseCard',
                    'openCard']
            });
            //通过ready接口处理成功验证
            wx.ready(function () {
                // wx.onMenuShareAppMessage({
                //     title: '微信分享接口-分享图标', // 分享标题
                //     desc: '分享图标', // 分享描述
                //     link: 'http://cr.swmobile.ibosplus.com/?_target=InviteJoin&providerId=5#/InviteJoin', // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
                //     imgUrl: '', // 分享图标
                //     type: '', // 分享类型,music、video或link，不填默认为link
                //     dataUrl: '', // 如果type是music或video，则要提供数据链接，默认为空
                //     success: function () {
                //         // 用户点击了分享后执行的回调函数
                //     }
                // });
                runApp();
            });
            //通过error接口处理失败验证
            wx.error(function (res) {
                alert("wx.error" + JSON.stringify(res));
                // config信息验证失败会执行error函数，如签名过期导致验证失败，具体错误信息可以打开config的debug模式查看，也可以在返回的res参数中查看，对于SPA可以在这里更新签名。
            });
        }
    });
};

if(wx) {
    configJSSDK();
}

if (/Android [4-6]/.test(navigator.appVersion)) {
    window.addEventListener('resize', function () {
        if (document.activeElement.tagName === 'INPUT' || document.activeElement.tagName === 'TEXTAREA') {
            window.setTimeout(function () {
                document.activeElement.scrollIntoViewIfNeeded()
            }, 0)
        }
    })
}

